package com.appsindy.reserv.service;

import java.util.Date;
import java.util.List;

import com.appsindy.reserv.bo.Combo;
import com.appsindy.reserv.bo.Customer;
import com.appsindy.reserv.vo.CalendarMatrix;
import com.appsindy.reserv.vo.CustomerVO;
import com.appsindy.reserv.vo.DiscountVO;
import com.appsindy.reserv.vo.Info;
import com.appsindy.reserv.vo.ItemVO;
import com.appsindy.reserv.vo.ReserveDetailVO;
import com.appsindy.reserv.vo.ReserveInfoRoomVO;
import com.appsindy.reserv.vo.ReserveInfoTypeVO;
import com.appsindy.reserv.vo.ReserveInfoVO;
import com.appsindy.reserv.vo.ReservePaymentVO;
import com.appsindy.reserv.vo.ReservePrintReceiptVO;

public interface ReservationServices {
	
	public Customer getCustomer(int id);
	public List<Customer> getAllCustomers();
	
	public List<Combo> getMonthCombos();
	public List<Combo> getYearCombos();
	public List<Combo> getGroupCombos();
	public List<Combo> getCustomerCombos();
	public List<CustomerVO> getCustomerVOCombos();
	public List<CustomerVO> getCustomerPaymentCombos(int paymentId);
	public List<Combo> getCustomerByHeaderCombos(int serviceHeaderId);
	public List<Combo> getStatusCombos();
	public List<Combo> getGroupPopupCombos();
	public List<Combo> getTypeOfRoomCombos();
	public List<Combo> getZoneCombos(int typeOfRoom);
	public List<Combo> getFloorCombos(int typeOfRoom, String zone);
	public List<Combo> getRoomCombos();
	public List<Combo> getItemCombos();
	public List<Combo> getRoomCombosByTypeOfRoom(int typeOfRoomId, Date dateFrom, Date dateTo);
	public List<Combo> getPaymentMethodCombos();
	public List<Combo> getRoomByHeaderCombos(int serviceHeaderId);
	
	public CalendarMatrix getCurrentReserve(int month, int year);
	public List<Info> selectGroup(int group, String status);
	public List<Info> selectGroupResultPopup(int group, String status);
	public List<Info> selectCustomer(int customer, String status);
	public List<Info> selectCustomerResultPopup(int customer, String status);
	public List<Info> selectRoom(int room, String status);
	public List<Info> selectRoomResultPopup(int room, String status);

	public ReserveInfoTypeVO selectAvailableTypeOfRoom(ReserveInfoTypeVO infoType);	
	public ReserveInfoRoomVO selectAvailableRoom(ReserveInfoRoomVO infoRoom);	
	public ReserveInfoRoomVO selectAvailableRoomWithGo(ReserveInfoRoomVO infoRoom);	
	
	public ReserveInfoTypeVO processReserve(ReserveInfoTypeVO infoType, String serviceStatus);	
	public ReserveInfoVO getRoomRate(int groupId, Date dateFrom, Date dateTo, int typeOfRoom);	
	public ReserveInfoVO getDetailRoomRate(int groupId, Date dateFrom, Date dateTo, int typeOfRoom, int roomId);	
	public void clearTemp(int seqId);
	
	public List<CustomerVO> getCustomerTreeList(int serviceHeaderId);	
	public CustomerVO getCustomerById(int customerId);	
	public CustomerVO getCustomerViewById(int paymentId, int customerId);	
	public ReserveDetailVO getReserveDetail(ReserveDetailVO detailVO, int groupId);	
	public ReserveDetailVO getReserveDetailById(int groupId, int serviceDetailId);	
	public ReserveDetailVO getReserveDetailByRoomId(int groupId, int typeOfRoomId, int roomId, Date dateGen);	
	public ReserveDetailVO saveReserveDetail(ReserveDetailVO reserveDetail);	
	public List<Combo> getTitleCombos();
	public List<Combo> getGenderCombos();
	public List<Combo> getProvinceCombos();
	public List<Combo> getNationalityCombos();
	public CustomerVO addCustomer(CustomerVO customerVO);
	public CustomerVO editCustomer(CustomerVO customerVO);
	public ReserveInfoRoomVO processReserveRoom(ReserveInfoRoomVO infoRoom, String serviceStatus);	
	public ReservePaymentVO saveReservePayment(ReservePaymentVO reservePayment);	
	public ReservePaymentVO confirmReservePayment(ReservePaymentVO reservePayment);	
	public ReservePaymentVO selectReservePayment(ReservePaymentVO paymentVO);	
	public ReserveDetailVO getRoomInfo(int serviceDetailId);	
	public DiscountVO checkAuthorizedDiscount(DiscountVO discountVO);
	public void deleteDetailReserveRoom(int serviceDetailId);
	public ItemVO getItemById(int itemId);
	
	public List<String> checkRoomBeforeCheckin(String _arrServiceDetailId, String _arrDateFrom, String _arrDateTo, String _arrRoomId);
	public String checkServiceCancelJob(int serviceHeaderId, String serviceStatus);
	public ReservePrintReceiptVO genAndPrintReceiptPayment(ReservePrintReceiptVO vo);
	
}
